There exists today a wide variety of small, typically handheld, electronic appliances known generally as mobile internet devices, including in particular the vast array of products commonly known as mobile phones. Nearly all such devices now provide a mechanism for obtaining and executing mobile applications, also known as mobile apps, which are software modules that impart new functionality to a mobile device, such as games and other entertainments, information management tools, business tools, and a multitude of others. Mobile applications are generally distributed via an online “store,” which is typically implemented as a specialized combination of interne website and mobile application designed to present an environment for discovering, investigating, purchasing, and downloading mobile applications that did not come preloaded on the mobile device. In today's business environment and at the current level of technology maturity, each manufacturer or distributor of a particular mobile device brand provides a store dedicated to that brand. Popular examples include Apple's iPhone App Store, RIM's Blackberry App World, Nokia's Ovi, and Palm's webOS App Catalog.
Also associated with each brand of mobile device is a development kit, which is a set of tools used by software developers to create mobile applications and offer the created mobile applications for distribution via the corresponding online store. While many development kits use certain common technologies rooted in standards, such as the Java or C programming languages, XML-based data description formats, and the Eclipse-based tool framework, the variety of combinations is quite large and it is rare for mobile device brands to share enough of the tools in their respective development kits for applications written on one to work without modification on another. Of particular interest in this area are the groups of device brands that share a software layer known as an operating system, or OS. For example, multiple device manufacturers incorporate Microsoft's Windows Mobile or some form of Linux, thereby achieving significant commonality of development kit. However, in this architecture pattern each device brand adds device-specific components such as hardware drivers and presentation styles on top of the OS, such that all but the simplest applications built for one device brand remain unusable on another, even within the same OS group.
In addition to the device-specific and OS-specific development kits described in the foregoing, generic development kits have begun to emerge that attempt to offer an abstract device model, typically through an API that is implemented with identical semantics and identical syntax on multiple device brands or multiple operating systems. Such tools ease somewhat the application developer's burden, by allowing the same software source code to be used for an application that will be built and deployed on multiple device brands and potentially multiple operating systems. However, so far as they exist today these tools still force the developer to use the various device-specific development kits for the final steps of packaging and deploying the corresponding device-specific application versions. Further, the generic-model development kits that exist today, including for example Appcelerator and Antenna Mobility Platform, do not achieve the status of device or OS brands known to end users, and therefore cannot successfully offer a corresponding store, or distribution environment.
Thus, in general an application developer who wishes to make a particular mobile application available on multiple mobile device brands must develop and test that application in multiple development kits, and submit each finished product separately to the corresponding online store. When a new brand emerges with its own unique development kit and store, the application must be created, or at least built and tested, yet again if it is to be available for users of mobile devices under that brand.
The complexity of existing development kits, whether device-specific, OS-specific, or generic, creates a further constraint on the current art. Specifically, the text-based programming languages and computer-like software architectures that form the basis of today's mobile application infrastructure have created a situation in which the skills and knowledge required to create a mobile application tend to exist primarily among professional programmers and prodigies, whose abstract mathematical abilities and logical thought processes have been honed through education, inspired by innate talent, or both. This creates a challenging barrier for creative people whose talents lie in other areas or whose education has not advanced so far, who also have ideas for unique mobile applications that may be interesting or useful to themselves and others. The vast majority of mobile device users, who may for example be children or parents, teachers or students, nurses or patients, and workers, professionals, managers, or retirees in any number of fields, are not professional programmers or mathematical prodigies and have no means today of expressing their ideas and embodying their ideas in mobile applications, much less of sharing those applications with others who could use or enjoy them. In the domain of personal computers it has been known for decades that children, for example, can create interesting software using such tools as Logo and, more recently, Scratch and Alice. No such breakthrough has yet been achieved in the domain of mobile devices, although at this writing a version of Scratch for mobile devices is being developed (http://llk.media.mit.edu/projects.php?id=1974).
In addition to the difficulty of mobile application development, there is the further complexity of verification testing. Programming specialists will generally execute a significant number of behavioral and performance tests to ensure that a mobile application does what it is meant to do in the presence of intended conditions and stimuli (positive behavior test cases), does something sensible in the presence of unintended conditions or stimuli (negative behavior test cases), and in any case performs with appropriate user responsiveness (performance test cases). A novice programmer or non-specialist, on the other hand, may be able to identify and execute a subset of the appropriate positive behavior test cases, but will generally not be able even to recognize the need for the remainder of the desired test cases.
The mobile application developer is not the only party on which a testing burden falls. The proprietor of each mobile application store, being a device manufacturer, distributor, or service provider, has an interest in ensuring that users of the corresponding devices receive a consistent experience and are not harmed by ill-designed or even malicious mobile applications. In general, to provide such a user experience drives each store to be backed by a staff of testing specialists who examine each submitted mobile application prior to making it available for widespread distribution. These specialists are no doubt equipped with various tools that facilitate and simplify the process of verifying whether a mobile application's behavior and performance conform to the store's norms. Tools which may be applied in this situation, well known to those skilled in the art, include malware scanners, device emulators, and automated test execution environments that work with test cases submitted by the developer along with the application. The intervention of specialists to apply these tools and determine whether a mobile application is suitable for distribution introduces delay and uncertainty between developer and customer, and features the potential for human error that could allow inappropriate applications through or block applications unnecessarily.
What is needed, then, is a system whereby mobile device users who are not programming specialists may create mobile applications and offer the created applications for distribution to others, without regard for any specific device's brand, model, OS, dedicated development kit, or dedicated application store. Such a system will preferably automate the testing of individual mobile applications for any and all device brands, models, and operating systems, both to verify the application's conformance to user experience rules and to assist the application's creator in achieving the intended behaviors. Such a system, further, will preferably enable communication and interaction between and among application creators, end users, and other interested persons, so as to facilitate creation, distribution, discovery, investigation, provision, customization, utilization, and improvement of interesting, entertaining, and useful mobile applications. Such a system will also preferably permit new applications to be created through attribute customization of existing applications, incorporation of various existing application components, and even incorporation of entire existing applications, with a minimum of effort and detailed technical knowledge by application creators.